package com.yisu.expressway.api.core.service;

import com.yisu.expressway.api.domain.request.GoodsInfoRequest;
import com.yisu.expressway.api.domain.vo.CategoryGoodsVo;
import com.yisu.expressway.api.domain.vo.GoodsDetailVo;
import com.yisu.expressway.ewf.entity.GoodsSpecification;

import java.util.List;

/**
 * Created by zj on 2017/5/2.
 */
public interface IGoodsInfoService {
    /**
     * 通過商品編號，商品規格編號，分類編號獲取商品详情
     * @param goodsInfoRequest
     * @return
     */
    GoodsDetailVo getGoodsDetail(GoodsInfoRequest goodsInfoRequest);

    /**
     * 通过商品分类编号与商品编号获取商品规格组名
     * @param goodsInfoRequest 请求信息
     * @return
     */
    List<String> getSpecificationGroupNameByGoodsNoAndCategoryCode(GoodsInfoRequest goodsInfoRequest);

    /**
     * 通过规格主键获取当前规格路径
     * @param specificationNo 规格主键
     * @return
     */
    String selectNodePathByPrimaryKey(Long specificationNo);

    /**
     * 通过商品分类编号与商品编号获取商品规格列表
     * @param goodsInfoRequest 请求信息
     * @return
     */
    List<GoodsSpecification> getSpecificationListByGoodsNoAndCategoryCode(GoodsInfoRequest goodsInfoRequest);

    /**
     * 通过分类获取分类推荐商品列表
     * @param goodsInfoRequest 分类编号
     * @return 分类列表
     */
    List<CategoryGoodsVo> getGoodsListByCategoryCode(GoodsInfoRequest goodsInfoRequest);

    /**
     * 通过分类路径获取其下所有分类商品
     * @param goodsInfoRequest 含分类路径信息
     * @return 分类列表
     */
    List<CategoryGoodsVo> getGoodsListByNodePath(GoodsInfoRequest goodsInfoRequest);

    /**
     * 通过关键字检索商品列表
     * @param goodsInfoRequest 检索关键字信息
     * @return 商品列表
     */
    List<CategoryGoodsVo> getGoodsListByQuery(GoodsInfoRequest goodsInfoRequest);

}
